package com.example.schooljava.util;

import org.apache.commons.codec.binary.Base64;

import java.io.FileOutputStream;
import java.io.OutputStream;


/**
 * 将base64数据转换为图像
 *
 * @author: LDH
 * @date: 2022年08月29日 14:40
 */
public class Base64Util {
    // 对字节数组字符串进行Base64解码并生成图片
    //imgFilePath 待保存的本地路径
    public static void GenerateImage(String base64Str, String imgFilePath) {
        if (base64Str == null) // 图像数据为空
            return;
        try {
            // 去掉base64前缀 data:image/jpeg;base64,
            base64Str = base64Str.substring(base64Str.indexOf(",", 1) + 1, base64Str.length());
            // Base64解码
            byte[] bytes = Base64.decodeBase64(base64Str);
            for (int i = 0; i < bytes.length; ++i) {
                if (bytes[i] < 0) {// 调整异常数据
                    bytes[i] += 256;
                }
            }
            // 生成jpeg图片
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(bytes);
            out.flush();
            out.close();
            //====
        } catch (Exception e) {
            System.out.println("图片转换异常: " + e.getMessage());
        }
    }
}